package com.wang.springframework.beans.factory;

import com.wang.springframework.beans.BeansException;
import com.wang.springframework.beans.factory.config.AutowireCapableBeanFactory;
import com.wang.springframework.beans.factory.config.BeanDefinition;
import com.wang.springframework.beans.factory.config.BeanPostProcessor;
import com.wang.springframework.beans.factory.config.ConfigurableBeanFactory;

/**
 * @author wangjianhua
 * @Description
 * @date 2021/8/24/024 18:18
 **/
public interface ConfigurableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigurableBeanFactory {

    /**
     * 获取BeanDefinition
     * @param beanName bean名称
     * @return BeanDefinition
     * @throws BeansException 异常
     */
     BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 预实例化单例
     * @throws BeansException 异常
     */
     void preInstantiateSingletons() throws BeansException;

    /**
     * 增加beanPostProcessor
     * @param beanPostProcessor beanPostProcessor
     */
     @Override
     void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);
}
